package com.wuxianedu.webview;

import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.util.Log;
import android.view.KeyEvent;
import android.view.View;
import android.webkit.WebSettings;
import android.webkit.WebView;
import android.webkit.WebViewClient;

public class MainActivity extends AppCompatActivity {

    private WebView myWebView;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        myWebView = (WebView) findViewById(R.id.webview);
        myWebView.loadUrl("file:///android_asset/example.html");
//        myWebView.loadUrl("http://www.baidu.com"); // 加载网址（默认是打开一个浏览器，显示网页）
        myWebView.setWebViewClient(new MyWebViewClient()); // 设置客户端 之后 就可以 在webview中显示
        WebSettings settings = myWebView.getSettings();
        settings.setJavaScriptEnabled(true);

        // js----->android
        //第一个参数 接口（所有被js调用的代码，都写在这个接口里） 第二个参数 就是第一个接口对象在js中的引用
        myWebView.addJavascriptInterface(new WebAppInterface(this), "Android");

        Log.e("------","-------");
    }


    // android(button)---js----android(toast)
    // android----调用js
    public void callJS(View view) {
        myWebView.loadUrl("javascript: showAndroidToast('顺便传个参数给JS！')");
        Log.i("------","------");
    }


    class MyWebViewClient extends WebViewClient{
        // android 4.4
        @Override
        public boolean shouldOverrideUrlLoading(WebView view, String url) {
//            // 如果打开的是你自己的页面，则用webview加载
//            if (Uri.parse(url).getHost().equals("www.example.com")) {
//                // This is my web site, so do not override; let my WebView load the page
//                view.loadUrl(url);
//                return false;
//            }
//            // 为什么 这样去设计 有一定的安全问题，尽量不要让你的webview 加载别人的链接
//            // 否则，用浏览器打开页面
//            // Otherwise, the link is not for a page on my site, so launch another Activity that handles URLs
//            Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(url));
//            startActivity(intent);
            view.loadUrl(url);
            return false;
        }
    }


    @Override
    public boolean onKeyDown(int keyCode, KeyEvent event) {
        if (keyCode == KeyEvent.KEYCODE_BACK && myWebView.canGoBack()){
            myWebView.goBack();
            return true;
        }

        return super.onKeyDown(keyCode, event);
    }
}
